草庐IT

MySQL CHECK 约束替代

全部标签

c++ - 替代虚函数调用实现?

C++通过虚拟机制支持动态绑定(bind)。但据我了解,虚拟机制是编译器的一个实现细节,标准只是规定了在特定场景下应该发生的行为。大多数编译器通过虚表和虚指针来实现虚机制。这与虚拟指针和表的实现细节无关。我的问题是:除了虚拟指针和虚拟表机制之外,是否有任何编译器以任何其他方式实现虚拟函数的动态分配?据我所见(阅读G++、MicrosoftVisualStudio)通过虚拟表、指针机制实现它。那么实际上还有其他编译器实现吗?任何只有一个虚函数的类的sizeof将是该编译器上的指针(this内的vptr)的大小。那么假设虚拟指针和TBL机制本身是编译器实现,我上面的这个说法是否总是正确的?

c++ - 约束包含是否仅适用于概念?

考虑这个例子:templateinlineconstexprboolC1=true;templateinlineconstexprboolC2=true;templaterequiresC1&&C2constexprintfoo(){return0;}templaterequiresC1constexprintfoo(){return1;}constexprintbar(){returnfoo();}是调用foo()不明确,或者约束C1&&C2包含C1? 最佳答案 是的。只有概念可以被包含。调用foo是模棱两可的,因为这两个声明都不

c# - 使用约束 delaunay 三角剖分对多边形进行三角剖分

我有一个约束delaunay三角剖分(CDT)算法,我有一个多边形(它可以是凹面或凸面)作为输入。如何在不引入新点的情况下使用该约束delaunay三角剖分算法将多边形分解为三角形?编辑:所有三角形的并集必须等于多边形。所以不能只将CDT连同边界作为约束边来生成三角形,因为无论输入是凹的还是凸的,这都会产生凸多边形。 最佳答案 由于您有一个多边形而不是点云,最简单的方法是简单地进行三角测量,然后访问每条边并使用简单的线-多边形相交测试来测试它是否在原始多边形之外。根据您的算法,您可以将此测试作为三角形segmentation的一部分

c++ - 具有关联属性的 boost::hash_combine 的替代方案?

我正在寻找具有关联属性的hash_combine函数。例如,我希望能够依次组合值a、b、c、d以获得序列的哈希键,或者组合a和b,然后组合c和d,然后组合结果。这两种方法应该给出相同的结果。boost::hash_combine没有那个属性://a*b*c*dstd::size_tseed=0;boost::hash_combine(seed,234);boost::hash_combine(seed,62);boost::hash_combine(seed,675);boost::hash_combine(seed,916);std::cout有什么好的hash_combine函数吗

c++ - 替代 std::vector 来存储一系列对象

我正在处理数百万个要按顺序访问的数据元素。元素很少增长和收缩,但会以可预测的方式以已知block大小增长和收缩。我正在寻找类似于std::vector的高效集合,它不会重新分配但将数据保存在多个内存块中。每当我将更多对象放入集合中时,如果最后一个block已用完,则会创建并填充一个新block。我不希望有一个随机访问运营商。由于性能问题和一些超出手头问题范围的其他问题,我无法使用std::list。是否有适合我在boost或任何其他库中的要求的现成集合。在尝试自己做饭之前,我想确保货架上没有可用的东西。 最佳答案 在我看来,最好的选

c++ - 生成随机约束图

我需要生成一个具有固定顶点数的随机图。我每次都很难找到解决方案。图形规则每个顶点将有一个随机数量的连接,最多为N-1,其中N是顶点的总数。顶点不能包含与自身的直接连接顶点不能包含与其他顶点的重复连接。如果顶点A连接到顶点B,则顶点B必须连接到顶点A。每个顶点必须连接到至少3个其他顶点。所以每个顶点将有[3,N-1]条边。我大约有70%的时间得到了正确的解决方案,但其他时候我在图中走得很远,然后就没有有效的顶点了。我需要对顶点连接有什么约束才能保证解决方案?目前我在做什么为[3,N-1]之间的每个顶点随机分配一些连接。检查连接总数是否为偶数。如果A指向B,B指向A,那么图中的连接总数应该

c++ - 创建模板化对象时替代工厂模式 - C++

我想为一个CG项目实现一个Mesh类,但遇到了一些问题。我想要做的是一个Mesh类,它向用户隐藏实现细节(比如加载到特定API:OpenGL、DirectX、CUDA等)。此外,由于Mesh类将用于研究项目,因此该Mesh类必须非常灵活。classChannel{virtualloadToAPI()=0;}templateclassTypedChannel:publicChannel{std::vectordata;};templateclassOpenGLChannel:publicTypedChannel{loadToAPI();//implementation};classMes

c++ - GCC ICE——替代函数语法、可变参数模板和元组

(与C++0x,HowdoIexpandatupleintovariadictemplatefunctionarguments?相关。)以下代码(见下文)取自此discussion.目标是将函数应用于元组。我简化了模板参数并修改了代码以允许返回泛型类型的值。虽然原始代码编译正常,但当我尝试使用GCC4.4.3编译修改后的代码时,g++-std=c++0xmain.cc-omainGCC报告内部编译器错误(ICE),并显示以下消息:main.cc:Infunction‘intmain()’:main.cc:53:internalcompilererror:intsubst_copy,at

c++ - 编写 ODBC 驱动程序的替代方法

我们将分配的时间序列数据存储到我们自己的专有“数据库”中。在我们系统的下一个版本中,我们希望为我们的用户提供一个简单的查询机制,以使用标准工具从数据库中提取原始数据(作为我们系统可以创建的报告的补充)。我研究过编写ODBC驱动程序的可能性,但它看起来是一项艰巨的任务,尤其是当使用非常简单的select语句时。如果图书馆提供任何提示、想法和/或建议,我将不胜感激,它们可以使这项任务更简单一些。我们的平台是Windows和我们的开发者。环境。是visualstudio2010(nativeC++) 最佳答案 ALINQprovider.

c++ - 并行迭代宏的替代方案?

这将是一个很长的故事,但也许你们中的一些人愿意研究这个案例。我正在从事并行图算法开发。我选择了一个名为STINGER的尖端HPC并行图数据结构。.STINGER的使命声明如下:"STINGERshouldprovideacommonabstractdatastructuresuchthatthelargegraphcommunitycanquicklyleverageeachothers'researchdevelopments.[...] AlgorithmswrittenforSTINGERcaneasilybetranslated/portedbetweenmultiplelan